home *** CD-ROM | disk | FTP | other *** search
/ Aminet 33 / Aminet 33 - October 1999.iso / Aminet / dev / cross / ava-0.2.5.lha / ava-0.2.5 / CHANGES next >
Encoding:
Text File  |  1999-03-23  |  13.8 KB  |  443 lines

  1.  
  2.             AVA CHANGES
  3.             Uros Platise (c) 1998,1999
  4.             Special thanks to Denis Chertykov.
  5.  
  6.  
  7. 0.1.3 -> 0.1.4 (8. Januar, 1999)
  8. ================================
  9.  * keyword: ds.X is now fixed: storage size can now also
  10.             be given as a set macros
  11.  
  12.  * public/common symbols are added
  13.             Public macro can now be defined multiple times
  14.             only and only if they completely match.
  15.  
  16.             An example of usage: 
  17.               #define public __AVR_WRAP_AROUND
  18.  
  19.             The symbol __AVR_WRAP_AROUND must be put into the
  20.             object file otherwise linker will never get it.
  21.             Usually if more than one source has defined a public
  22.             sym, ava produces error; but in this case not.
  23.             Because __AVR_WRAP_AROUND is defined with the same 
  24.             macro "1".
  25.  
  26.  * wrap around option added (already included in arch.inc)
  27.             macro: __AVR_WRAP_AROUND
  28.  
  29.  * BUG FIX: Remarks starting with ; can be now written as:
  30.             #define test;remark, remark, remark
  31.  
  32.  * BUG FIX: extern virtual symbols now work and also public references
  33.             cross files are now fixed.
  34.  
  35.  
  36. 0.1.4 -> 0.1.5 (9. Januar, 1999)
  37. ================================
  38.  * BUG FIX: "dc.w -1" produced wrong output: "ffffffff" instead "ffff"
  39.  
  40.  * System macros, can now be declared before arch.inc is loaded.
  41.             Example:
  42.               #define __X1    /* system macros should start with */
  43.               #define __X2      /* two underlines "__" */
  44.             Usage: to redefine segment length as __ERAM_SIZE
  45.               #define AT90S8515 /* at this point, arch.inc is included */
  46.  
  47.  * BUG FIX: ava is now "friendly" compiled with egcs++ compiler
  48.  
  49.  * Expressions are now added to #ifdef statements. For example:
  50.              #ifdef A | B
  51.              ...
  52.              #endif
  53.              All symbols that are not defined at the #ifdef statement,
  54.              are taken as zeros.
  55.  
  56.  * Expression parser is now extended to the following operations:
  57.              a>b, a<b, a==b, a<=b, a>=b
  58.              It returns 1 or 0, depending on condition.
  59.              You can use them anywere where expressions are allowed
  60.              (including the ifdef statements)
  61.  
  62.              Note: to support above feature, character = has moved
  63.                    from CONTROL group to MATH group (since it was not
  64.                    thought to be a part of expressions at early begining).
  65.             
  66.              I hope I did not miss something: if you find somewhere a 
  67.              somewhat correct notation (as: seg abs=1 flash) but you
  68.              get error at '=' character; this is because = has changed
  69.              its group. (In that case, immediatelly report me an error).
  70.  
  71.  The following changes were submitted by Denis:
  72.  ----------------------------------------------
  73.  * FILES are now linked in the same order as listed in the command line
  74.  
  75.  * -e option added to disable reports
  76.  
  77.  * On return, ava return number of errors (returns zero on success)
  78.  
  79.  * BUG FIX: ld rX,Z
  80.  
  81.  
  82. 0.1.5 -> 0.1.6 (15. Januar, 1999)
  83. =================================
  84.  * Listing file -L switch is now specifed to the compiler and to
  85.    the linker any more. To files, which were assembled with -L switch, 
  86.    a listing is generated; other are skipped. (new)
  87.  
  88.  * Command line parameters are now given in a little bit different form.
  89.    Parameters -DLIl should be written as:
  90.  
  91.     ava -Dmacro_name -Lasm_source -Iinclude_directory -llog_file
  92.   
  93.        Output file remained the same:
  94.  
  95.          ava -o out_file
  96.  
  97.  * Setting the log file (the -l <log_filename>) multiple times (new)
  98.  
  99.        This feature is somehow intented for use with avr-gcc which is by 
  100.        default run with -e option. If user wants to get the segment 
  101.         information,  he must declare new log file as:
  102.  
  103.         avr-gcc ....... -Xlinker -lava.log
  104.  
  105.  * BUG FIX: #ifdef 
  106.          ava -Dmacro generate "Bad format: macro" report in #ifdef
  107.          statements. 
  108.  
  109.   * #ifdef <extern_symbol> (new)
  110.     Now you can test the following case:
  111.      
  112.         extern _idle
  113.         #ifdef _idle
  114.         rcall _idle 
  115.         #endif
  116.  
  117.         This features enhances modular programming.
  118.  
  119.   * arch.inc: Protection of the register and io_space (new)
  120.     All models excluding the AT90S1200 have memory mapped
  121.     register and io_space. It might happen that user forget
  122.     to fill or skip that area (from 0 to 0x5F).
  123.     
  124.     To avoid this problem, two fixed abs and size segments
  125.     are declared (see arch.inc for details).
  126.  
  127.   * arch.inc: segment: eram.sram (removed)
  128.     It showed up it is useless.
  129.  
  130.  
  131. 0.1.6 -> 0.1.6.1 (15. Januar, 1999)
  132. ===================================
  133.   * BUG FIX: #else
  134.     The following code did not work:
  135.     #ifdef A
  136.     #ifdef B
  137.         clr r0
  138.     #else
  139.         tst r0
  140.     #endif
  141.     #endif
  142.  
  143.     It produced code for "tst r0". Every #else in the second or higher
  144.     stack level returned wrong result.
  145.  
  146.  
  147. 0.1.6.1 -> 0.1.7 (18. Januar, 1999)
  148. ===================================
  149.   * BUG FIX: expression termination
  150.     The following example did not work: 
  151.         ldi r16,3+123+2        out PORTB,21
  152.  
  153.     In the case that two or more instructions were in the same line,
  154.     what is often used in macros, expression yawned an error
  155.     "Operator is required before out". Now it is fixed and it only
  156.     yawns that error when expression is not closed as in example:
  157.  
  158.          ldi r16,3+(6+2        out PORTB,21
  159.  
  160.     This is malformed expression and operator should be placed between
  161.     2 and out token.
  162.  
  163.   * BUG FIX: sortRefs() function cycled when Abstract and Non-Abstract 
  164.     types were used within the same sub-segment.
  165.  
  166.   * New machanism for output streams is developed (new)
  167.     
  168.   * Empty Segments are now given an absolute address (new)
  169.      This feature allows you to put the segment size in your code.
  170.     Example:
  171.         
  172.         seg flash.list
  173.         seg flash.list.T
  174.  
  175.         seg flash.code
  176.         dc.w _flash_list_T - _flash_list
  177.  
  178.   * Segment Align Option (new)
  179.     With align option, linker checks the sizes of segments and if
  180.     they not much with the align size, it extends them.
  181.     See next item for example.
  182.     By default align equals 1. If another value is specifed all
  183.     childs will use the same allignment. If child has specifed its
  184.     own align size, it must be the same as the parent's one.
  185.     Unless error is produced.
  186.  
  187.   * Mirror Segments (new)
  188.     You can mirror one segment to another. Only one mirror per
  189.     segment is possible. Mirror segment must be already declared.
  190.     Example:
  191.  
  192.         seg align=2 flash.data
  193.         seg abstract mirror=flash.data eram.data
  194.  
  195.     All data from eram.data will be copied from eram.data to flash.data
  196.     This feature is required by GCC.
  197.  
  198.     Mirror segment can be declared only once. Otherwise, error will
  199.     be produced.
  200.  
  201.   * For use with Denis avr-gcc, prep program is not needed anymore with new
  202.     crt1.s 
  203.  
  204.  
  205. 0.1.7 -> 0.1.7.1 (23. Januar, 1999)
  206. ===================================
  207.   * FEATURE FIX: Abstract flag is now forwared cross files to the same
  208.     segments. An example:
  209.     
  210.     Segment declared as:    
  211.         seg abstract eram.test
  212.  
  213.     And in other file:
  214.         seg eram.test
  215.  
  216.     Was not abstract anymore, since the other segment did not specify
  217.     it.
  218.  
  219.   * Little (new) and Big Endian (previous format) DC formats
  220.     Keyword "dc.x" defines constant of length x. Now you may also define
  221.     the output format of the dc.x keyword. These are:
  222.      * big endian (0x1234 is translated in its original form)
  223.          * little endian (0x1234 - bytes are swaped - 0x3412)
  224.  
  225.         The user may choose which format he wants to use. 
  226.     Examples:
  227.         dc.b    23,21,51    /* normal bytes */
  228.         dc.w    0x1234        /* little endian, output is 0x3412 */
  229.         dc.W    0x1234        /* big endian - output: 0x1234 */
  230.         dc.l    0x12345678    /* little end. - output: 0x78563412 */
  231.         dc.L    0x12345678    /* big endian - output: 0x12345678 */
  232.  
  233.     This feature was required by the avr-gcc compiler (which requires
  234.     little endian format)
  235.  
  236.   * FEATURE FIX: ParseMacro() add one space between two tokens
  237.     Space is now added if lxP->stick is false - that means, 
  238.     tokens were seperated in the original source.
  239.  
  240.   * FEATURE FIX: Removable Mirror Segments
  241.     Even removable segment can now be mirror segment. At least one
  242.     public label must be referenced within the segment and it won't
  243.     be removed.
  244.  
  245.   * Preprocessor Directive: #arch (new)
  246.     To avoid conflicits with selecting the device, special directive
  247.     "#arch device_name" was added which does excatly the same as 
  248.     the first non-system define.
  249.  
  250.   * FEATURE FIX: Segment Size can now be redefined to bigger one
  251.     Problem: libgcc and crt1 are compiled with default minimum
  252.       __ERAM_SIZE values. If users specifes bigger values in target.inc
  253.       or before #arch directive, linker reported an error.
  254.     
  255.     Solution: if two segments have different sizes, bigger one is
  256.               used.
  257.  
  258.     Note: Due to this feature, YOU SHOULD re-assemble crt1.s and
  259.           libgcc.s files again!
  260.  
  261.   * FEATURE FIX: Segment warning "Extending segment for x byte" is moved
  262.     to info and is not put to the stderr anymore if -l or -e option
  263.     is specified.
  264.  
  265.   * Multiple errors are now reported (new)
  266.     When assembler catches syntax error, unrolls the line and
  267.     continues with syntax analyses.
  268.  
  269.  
  270. 0.1.7.1 -> 0.1.7.2 (24. Januar, 1999)
  271. =====================================
  272.   * New AVR models are added: AT90S*33, AT90S*34 and AT90S*35
  273.   
  274.   * avr.inc has been extensively changed
  275.     avr.inc now selectively include Atmel's AVR definition
  276.     files according to the device selection.
  277.     It also includes some more macros - see: avalib/avr.inc
  278.  
  279.     Atmel's AVR definition files are provided in
  280.     the "avalib/avr" directory.
  281.  
  282.     Note: the user should include "avr.inc" only after the 
  283.           "#arch ..." directive.
  284.  
  285.   * Some little changes are done to warning and info reports ...
  286.  
  287.  
  288. 0.1.7.2 -> 0.2 (7. February, 1999)
  289. ==================================
  290.   * BUG FIX: mul instruction is moved away from the ATmega families
  291.  
  292.   * target.inc is now automatically included if -T command line 
  293.     swithc is specified.
  294.  
  295.   * ava development directory structure a little bit organised and
  296.     installation procedures are included within the Makefiles.
  297.  
  298.   * some variables were given init values to satisfy c++ compiler
  299.     when executed with -O option
  300.  
  301.   * BUG FIX: AVR_WRAP_AROUND options removed from AT90S4* models.
  302.  
  303.   * BUG FIX: #else produced stack error if used out of #ifdef/#endif
  304.     statement
  305.  
  306.   * NEW: new preproc. directive: #if             (avr.inc fix)
  307.     This directive now replaces former #ifdef since version 0.1.5. 
  308.         Because of C compatibility, #ifdef checks for presence of symbol
  309.     only and #if evaluates expression. 
  310.  
  311.       Note: avr.inc can be also used by GNU C compiler.
  312.  
  313.     You shall get an error message if ifdef is used in wrong way.
  314.  
  315.   * NEW: command line option: -p (pipe)
  316.     The AVA can read input from stdin and output to the stdout
  317.     unless output file name is specifed.
  318.     Linker cannot read from stdin but can output to stdout:
  319.  
  320.         ava test.o -o stdout
  321.  
  322.     This will do.
  323.  
  324.   * EXTENDED: macros are now also enabled during PASS2
  325.         This extendes the use of macros - they can be defined anywhere in
  326.         the source.
  327.     Attributes (extern, virtual) now make effect on macros too.
  328.     See documentation for help on usage.
  329.  
  330.   * NEW: 32 bit CRC Error Detection is added to Object Files
  331.     ava-0.1.7.2 object files are not compatible with 0.2 
  332.  
  333.   * NEW: 32 bit CRC Error Detection is added to uasm output file.
  334.     The uisp versions 0.1.3 and lower will simply ignore it.
  335.  
  336.   * NEW: User's Manual is now available in doc directory. :)
  337.  
  338.  
  339. 0.2 -> 0.2.1 (18. February, 1999)
  340. =================================
  341.   * NEW: command line (cmd) option -v (verbose) added and -e "removed"
  342.     Info messages are now disabled by default. Add -v to enable
  343.     them.
  344.     
  345.     -e option is not removed but does nothing - dummy switch.
  346.     It will be removed far in the future.
  347.     
  348.  
  349.   * NEW: cmd option -T extended
  350.     Target Def. File may be specified besides the -T switch as:
  351.         -Ttargetfile    example: -Tpsb.inc
  352.  
  353.     (psb = power supply board :))
  354.     The key point of this file is that is parsed before the source
  355.     code.
  356.  
  357.   * NEW: cmd option -A added
  358.     Declare target device as:    
  359.         -Adevice    example: -AAT90S1200
  360.  
  361.     Might be useful for different kind of testing.
  362.  
  363.   * EXTENDED: switch -I extended to files
  364.     If additional file needs to be included temporarly to a source
  365.     use the following syntax:
  366.  
  367.         -Ifilename
  368.  
  369.     The file 'filename' will be search in the current directories
  370.     and those on the search list specified by:
  371.  
  372.         -Idirname
  373.  
  374.     option.
  375.     The order of the -I switch in the command line does only effect
  376.     on the order these include files are included. Source is processed
  377.     last. 
  378.     
  379.     The target file is always included before include files.
  380.  
  381.   * NEW: preprocessor directive: #error
  382.     Produces error and prints string followed by the #error directive.
  383.     Example1:
  384.         #ifndef __AGE
  385.         #  error "Macro __AGE is not defined."
  386.         #endif
  387.  
  388.     Example2:
  389.         #if A==2
  390.         #  error A
  391.         #endif
  392.  
  393.   * NEW: preprocessor directive: #print
  394.     Prints text numbers and macros ...
  395.     Example:
  396.         #print "A equals: " A
  397.  
  398.   * EXTENDED: To AVA User's Manual examples are added.
  399.     (and of course, new switches are also documented).
  400.  
  401.   * BUG FIX (avr.inc): macro mmio was disabled and not enabled if
  402.       RAM (SRAM or and ERAM) was present.
  403.  
  404.   * EXTENDED: Macro parameters may be split into several lines.
  405.         Example1:
  406.             #define macro_xxx_yyy(
  407.                 long_parameter_1,    /* comment 1 */
  408.                 long_parameter_2    /* comment 2 */
  409.                 )    \
  410.                function    
  411.             
  412.   
  413. 0.2.1 -> 0.2.2 (19. February, 1999)
  414. ===================================
  415.   * BUG FIX: Segment Fitter
  416.       Serious problem with absolute segments is fixed.
  417.  
  418.  
  419. 0.2.2 -> 0.2.3 (2. March, 1999)
  420. ===============================
  421.   * NEW: command line option --help added
  422.     Does the same as -h; needed by the GNU C compiler
  423.  
  424.  
  425. 0.2.3 -> 0.2.4 (12. March, 1999)
  426. ================================
  427.   * NEW: AVR-CORE Bug Checking Mechanism
  428.       Special flag -favr_noskipbug is provided to disable
  429.       the checking mechanism.     
  430.     See ava User's Manual for details of this bug.
  431.       
  432.   * NEW: -f option to declare public macros via the command line
  433.   
  434.  
  435. 0.2.4 -> 0.2.5 (23. March, 1999)
  436. ================================
  437.   * BUG FIX: Segment tmp variable was not cleared in the function parse()
  438.       (Thanks to Nicolas Graffet who has found that strange behaviour.)
  439.   
  440.   * NEW: Out of space report now informs the status of the size of
  441.       required bytes per segment and available bytes per segment.
  442.  
  443.